#pragma once

	template <typename T>
	class Vector;

	template <typename T>
	class Vector_iterator {
	public:
		Vector_iterator() :ptr(nullptr),position(0) {}
		Vector_iterator(T *v, size_t posi=0) :ptr(v), position(posi){}

		void operator ++() { ++position; }
		void operator --() { --position; }
		bool operator != (Vector_iterator<T> other) { return position != other.position; }
		bool operator == (Vector_iterator<T> other) { return position == other.position; }
		bool operator <= (Vector_iterator<T> other) { return position<= other.position; }
		bool operator >= (Vector_iterator<T> other) { return position >= other.position; }
		bool operator < (Vector_iterator<T> other) { return position < other.position; }
		bool operator > (Vector_iterator<T> other) { return position > other.position; }
		T& operator * () { return ptr[position]; }

	private:
		T* ptr;
		size_t position;
	};
